Non-volatile memory systems provide a type of computer memory that retains stored information without requiring an external power source. One type of non-volatile memory, flash memory, is widely used in various computing devices and in stand-alone memory devices. For example, flash memory can be found in laptops, digital audio player, digital cameras, smart phones, video games, scientific instruments, industrial robots, medical electronics, solid state drives, USB drives, memory cards, and the like.
Various implementations of flash memory aim to increase storage capacity. For example, the implementation and architecture of flash memory enables single level cell (SLC) devices, where each cell stores one bit of information, and multi-level cell (MLC) devices including triple-level cell (TLC) devices, where each cell can store more than one bit of information. Additional advances in flash memory also include changes in the flash memory architecture that stack memory cells (3D NAND) in order to increase storage capacity at a reduced cost per gigabyte.
As flash memory continues to increase in storage capacity and density, the various memory cells can become increasingly difficult to read. To balance the need for increased density with a desire for accuracy, various solutions include the use of error-correcting code (ECC) and read error handling (REH) that, respectively, encode and decode the data readout and correct errors.